package com.lishem.carl._01array;

import java.util.Arrays;

/**
 * https://leetcode.cn/problems/squares-of-a-sorted-array/description/
 * <p>
 * 给你一个按非递减顺序排序的整数数组 nums，返回每个数字的平方组成的新数组，要求也按非递减顺序排序。
 * <p>
 * 示例 1：
 * <p>
 * 输入：nums = [-4,-1,0,3,10]
 * <p>
 * 输出：[0,1,9,16,100]
 * <p>
 * 解释：平方后，数组变为 [16,1,0,9,100]
 * <p>
 * 排序后，数组变为 [0,1,9,16,100]
 * <p>
 * 示例 2：
 * <p>
 * 输入：nums = [-7,-3,2,3,11]
 * <p>
 * 输出：[4,9,9,49,121]
 */
public class _7LetCode977_有序数组的平方 {

    public int[] sortedSquares(int[] nums) {
        int left = 0;
        int right = nums.length - 1;
        int[] res = new int[nums.length];
        int index = res.length - 1;
        while (left <= right && left < nums.length && right > -1) {
            if (nums[left] * nums[left] < nums[right] * nums[right]) {
                res[index--] = nums[right] * nums[right];
                right--;
            } else {
                res[index--] = nums[left] * nums[left];
                left++;
            }
        }
        return res;
    }

    public static void main(String[] args) {
        _7LetCode977_有序数组的平方 sol = new _7LetCode977_有序数组的平方();
        System.out.println(Arrays.toString(sol.sortedSquares(new int[]{-4, -1, 0, 3, 10})));
        System.out.println(Arrays.toString(sol.sortedSquares(new int[]{-7, -3, 2, 3, 11})));
    }
}
